﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using proyEspacio.logicaNegocio;

namespace proyEspacio.presentacion
{
    /// <summary>
    /// Interaction logic for formConsulta.xaml
    /// </summary>
    public partial class formConsulta : Window
    {
        public formConsulta()
        {
            InitializeComponent();
        }

        private void btn_buscar_Click(object sender, RoutedEventArgs e)
        {
            if (txt_busqueda.Text == "")
            {
                MessageBox.Show("Debe ingresar una busqueda", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            else 
            {
                bool existe = admGalaxia.existeGalaxia(txt_busqueda.Text);
                if (existe)
                {
                    List<string> listaSistemas = new List<string>();
                    var galaxia = admGalaxia.buscaGalaxia(txt_busqueda.Text);
                    do
                    {
                        var sistema = admSistPlaneta.buscaSistPlaneta(listaSistemas,galaxia.Id_galaxia);
                        if(sistema==null)
                        {
                            break;
                        }
                        else if (lb_sistPlaneta.Items.Contains(sistema.Nombre))
                        {
                            break;
                        }
                        else 
                        {
                            List<string> listaPlanetas= new List<string>();
                            do
                            {
                                var planeta = admPlaneta.buscaPlanetas(listaPlanetas, sistema.Id_sistema);
                                if (planeta == null)
                                {
                                    break;
                                }
                                else if (lb_planetas.Items.Contains(planeta.Nombre))
                                {
                                    break;
                                }
                                else
                                {
                                    List<string> listaEstrellas= new List<string>();
                                    do
                                    {
                                        var estrella = admEstrella.buscaEstrellas(listaEstrellas,sistema.Id_sistema);
                                        if (estrella == null)
                                        {
                                            break;
                                        }
                                        else if (lb_estrellas.Items.Contains(estrella.Nombre))
                                        {
                                            break;
                                        }
                                        else
                                        {

                                            List<string> listaSatelites = new List<string>();
                                            do
                                            {
                                                var satelite = admSatelite.buscaSistPlaneta(listaSatelites, planeta.Id_planeta);
                                                if (satelite == null)
                                                {
                                                    break;
                                                }
                                                else if (lb_satelite.Items.Contains(satelite.Nombre))
                                                {
                                                    break;
                                                }
                                                else
                                                {
                                                    lb_satelite.Items.Add(satelite.Nombre);
                                                    listaSatelites.Add(satelite.Nombre);
                                                }
                                            } while (listaSatelites != null);

                                            lb_estrellas.Items.Add(estrella.Nombre);
                                            listaEstrellas.Add(estrella.Nombre);
                                        }
                                    } while (listaEstrellas != null);

                                    lb_planetas.Items.Add(planeta.Nombre);
                                    listaPlanetas.Add(planeta.Nombre);
                                }
                            }while(listaPlanetas!=null);
                        
                            lb_sistPlaneta.Items.Add(sistema.Nombre);
                            listaSistemas.Add(sistema.Nombre);
                        }
                    }while(listaSistemas!=null);
                }
                else
                {
                    MessageBox.Show("La galaxia no existe", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            formInicio fi = new formInicio();
            fi.Show();
        }
    }
}
